package com.marchsoft.service;

import com.marchsoft.domain.Student;
import com.marchsoft.vo.HistoryGroupExtra;
import com.marchsoft.vo.HistoryTeacherExtra;
import com.marchsoft.vo.StuAndHistoryTea;
import com.marchsoft.vo.StudentExtra;

import java.util.List;
import java.util.Map;

public interface IStudentService {

    /**
     * 查询所有学生的信息
     * @return
     */
    List<Student> findAll();

    /**
     * 查询学生信息
     * @param accountId
     * @return
     */
    StudentExtra queryStudentInfo(Integer accountId);

    /**
     * 查询学生信息（附带专业导师信息、附带所属兴趣小组的信息、附带兴趣小组的老师信息）
     * @param sid 学生id
     * @return 学生信息（附带专业导师信息、附带所属兴趣小组的信息、附带兴趣小组的老师信息）
     */
    StudentExtra queryStudentInfoWithTeacher(Integer sid);

    /**
     * 学生退组
     * @param sid 学生id
     * @param gid 小组id
     * @return 返回true&false
     */
    Boolean updateGroupWithStudentBySid(Integer sid,Integer gid);

    /**
     * 查询小组的学生
     * @param gid
     * @return
     */
    List<Student> queryMystudentByGroup(Integer gid);

    /**
     * 查询导师的学生
     * @param tid
     * @return
     */
    List<Student> queryMystudentByteacher(Integer tid);



    /**
     * 处理查询的历史导师的信息
     * @param sid 学生id
     * @return 处理后历史导师的信息的集合
     */
    List<HistoryTeacherExtra> dealHistoryTeacherInfo(Integer sid);

    /**
     * 处理查询的历史小组的信息
     * @param sid 学生id
     * @return 处理后历史小组的信息的集合
     */
    List<HistoryGroupExtra> dealHistoryGroupInfo(Integer sid);

    /**
     * 查询学生信息和历史导师、历史兴趣小组信息
     * @param sid 学生id
     * @return 学生信息和历史导师、历史兴趣小组信息
     */
    Map<String,Object> studentWithHistoryInfo(Integer sid);

    /**
     * 查询的学生及其历史导师
     * @param sid 学生id
     * @return 使用的封装 StuAndHistoryTea
     */
    StuAndHistoryTea queryStuAndHistoryTea(Integer sid);
}
